import os
import cv2
import numpy as np

# 设置文件夹路径
he_folder = r"F:\lxj\stainedHE\pytorch-CycleGAN-and-pix2pix-master\datasets\PCAdata2\cropped\he"  # 修改为你的HE图像文件夹路径
wt_folder = r"F:\lxj\stainedHE\pytorch-CycleGAN-and-pix2pix-master\datasets\PCAdata2\cropped\wt"  # 修改为你的WT图像文件夹路径
output_folder = r"F:\lxj\stainedHE\pytorch-CycleGAN-and-pix2pix-master\datasets\PCAdata2\test-cropped"  # 修改为保存拼接图像的输出文件夹路径

# 如果输出文件夹不存在，则创建该文件夹
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 获取he和wt文件夹中的图像文件列表
he_images = sorted(os.listdir(he_folder))
wt_images = sorted(os.listdir(wt_folder))

# 确保两个文件夹中图像的数量相同
if len(he_images) != len(wt_images):
    raise ValueError("HE和WT文件夹中的图像数量不匹配！")

# 遍历并拼接图像
for he_image, wt_image in zip(he_images, wt_images):
    he_image_path = os.path.join(he_folder, he_image)
    wt_image_path = os.path.join(wt_folder, wt_image)

    # 检查是否是文件（防止目录或其他非图像文件）
    if os.path.isfile(he_image_path) and os.path.isfile(wt_image_path):
        # 读取HE和WT图像
        he_img = cv2.imread(he_image_path)
        wt_img = cv2.imread(wt_image_path)

        # 确保两张图像大小一致，若不一致，可以选择缩放其中一张图像（例如，缩放为 HE 图像的大小）
        if he_img.shape != wt_img.shape:
            wt_img = cv2.resize(wt_img, (he_img.shape[1], he_img.shape[0]))

        # 拼接图像：左右拼接
        concatenated_img = np.hstack((he_img, wt_img))

        # 保存拼接后的图像
        output_image_path = os.path.join(output_folder, f"paired_{he_image}")
        cv2.imwrite(output_image_path, concatenated_img)

        print(f"已保存拼接图像：{output_image_path}")

print("拼接完成！")
